package shuaige.jdk.多线程.base.线程的创建和启动.Callable接口;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * 通过实现Callable接口来创建线程类
 * 返回结果并可能引发异常的任务。 实现者定义了一个没有参数的单一方法，称为call
 **/
public class 实现Callable接口创建线程类1 implements Callable<Integer> {

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        实现Callable接口创建线程类1 tt = new 实现Callable接口创建线程类1();
        FutureTask<Integer> task = new FutureTask<>(tt);
        // 启动线程
        new Thread(task, "有返回值的线程").start();
        // 获取返回值
        System.out.println(task.get());
    }

    @Override
    public Integer call() {
        int i = 0;
        for (; i < 100; i++) {
            System.out.println(Thread.currentThread().getName() + " 的循环变量i的值：" + i);
        }
        // call()方法可以有返回值
        return i;
    }

}

